const mysql = require('mysql')

// 创建一个连接池，解决并发问题
const pool = mysql.createPool({
  connectionLimit: 20, // 无限制
  host: 'localhost',
  port: 3306,
  user: 'root',
  password: 'root123456',
  database: 'fspace'
})

// 查询操作封装，这里暂时不用抛出异常的方法，虽然抛出异常的方法最后写的代码少，但是自由度有点低
function query (sql, values = []) {
  return new Promise((resolve, reject) => {
    pool.getConnection((err, connection) => {
      if (err) {
        reject([err, null])
      }else {
        connection.query(sql, values, (err, results, fields) => {
          // 及时归还连接
          connection.release()
          if (err) {
            reject([err, null])
          } else {
            resolve([null, results])
          }
        })
      }
    }) 
  }).catch(err => err)
  // 因为await不接受reject
}

// module.exports 指的是exports对象直接就是赋的值
// exports.query 指的是exports对象中有query
module.exports = {
  query: query
}

